$.hash= $.wrapper()
$.hash.prototype=
{   init: function( obj, prefix ){
        this.$= obj
        this.prefix= prefix
        return this
    }
,   init0: function( ){
        return this.init( {}, '' )
    }
,   init1: function( obj ){
        return this.init( obj, '' )
    }
,   each: function( proc, self ){
        var obj= this.$
        if( obj.each ) return obj.each( proc, self || this )
        var prefix= this.prefix
        var preflen= prefix.length
        if( !self ) self= this
        for( var key in obj ){
            if( key.indexOf( prefix ) ) continue
            try {
                var val= obj[ key ]
            } catch( e ){ }
            proc.call( self, $.pair( key.substr( preflen ), val ) )
        }
        return this
    }
,   get: function( name ){
        var obj= this.$
        if( obj.get ) return obj.get( name )
        return obj[ this.prefix + name ]
    }
,   set: function( pair ){
        var obj= this.$
        if( obj.set ) return obj.set( pair ), this
        obj[ this.prefix + pair.key ]= pair.val
        return this
    }
,   merge: function( hash ){
        var obj= this.$
        if( obj.merge ) return obj.merge( hash ), this
        $.hash( hash ).each( this.set, this )
        return this
    }
,   destroy: function(){
        delete this.$, this.prefix
    }
}